import os
import json
import time
from wechat_ocr.ocr_manager import OcrManager, OCR_MAX_TASK_ID

# wechat_ocr_dir = r"D:\mycode\王者传奇\wechatocr\extracted\WeChatOCR.exe"  # OCR的地址，可以用everythin工具查找一下地址
wechat_ocr_dir = r"D:\mycode\python_wechat-ocr\ocr\WeChatOCR.exe"  # OCR的地址，可以用everythin工具查找一下地址
wechat_dir = r"D:\mycode\python_wechat-ocr\ocr"  # 一定是要包含mmmojo.dll的路径


def ocr_result_callback(img_path: str, results: dict):
    """
    OCR 结果回调函数
    """
    result_file = os.path.basename(img_path) + ".json"
    print(f"识别成功，img_path: {img_path}, result_file: {result_file}")
    with open(result_file, 'w', encoding='utf-8') as f:
        f.write(json.dumps(results, ensure_ascii=False, indent=2))
    # 打印 results 的内容以便调试
    print("OCR 结果：", json.dumps(results, ensure_ascii=False, indent=2))
    # 尝试提取识别的文字
    if 'ocrResult' in results:
        text_lines = [item['text'] for item in results['ocrResult']]
        print(f"识别的文字: {text_lines}")
    else:
        print("结果中没有 'ocrResult' 键，无法提取文字。")

def main():
    # 创建 OCR 管理器实例
    ocr_manager = OcrManager(wechat_dir)
    # 设置 WeChatOCR 目录
    ocr_manager.SetExePath(wechat_ocr_dir)
    # 设置微信所在路径
    ocr_manager.SetUsrLibDir(wechat_dir)
    # 设置 OCR 识别结果的回调函数
    ocr_manager.SetOcrResultCallback(ocr_result_callback)
    # 启动 OCR 服务
    ocr_manager.StartWeChatOCR()
    # 开始识别图片
    ocr_manager.DoOCRTask(r"D:\mycode\王者传奇\102.bmp")
    print("添加完成..........................")
    # 等待 OCR 任务完成
    while ocr_manager.m_task_id.qsize() != OCR_MAX_TASK_ID:
        time.sleep(0.1)
        pass
    print("识别完成......")
    # 结束 OCR 服务
    ocr_manager.KillWeChatOCR()
# 148,2,845,224
if __name__ == "__main__":
    main()